package com.zx.deploy.config;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import com.zx.deploy.model.Users;

@Component
@PropertySource(value = "classpath:deploy-${spring.profiles.active}.properties")
@ConfigurationProperties()
public class DeployConfig {
	// 备份数据库所使用脚本
	@Value("${backups.database.shell}")
	public String backups_database_shell;
	// 备份数据库文件根路径
	@Value("${backups.database.path}")
	public String backups_database_path;
	// 备份war包根路径
	@Value("${backups.war.path}")
	public String backups_war_path;

	// 程序包根路径
	@Value("${soft.file.path}")
	public String soft_file_path;
	// 程序包名称
	@Value("${soft.package.name}")
	public String soft_package_name;
	// 程序包解压后名称
	@Value("${soft.unzip.name}")
	public String soft_unzip_name;
	// 程序包sql文件夹
	@Value("${soft.sql.name}")
	public String soft_sql_name;
	// 程序包war文件夹
	@Value("${soft.war.name}")
	public String soft_war_name;
	// shell脚本所在文件夹
	@Value("${shell.path}")
	public String shell_path;
	// sql执行使用脚本
	@Value("${soft.sql.shell}")
	public String soft_sql_shell;
	// 数据库回滚脚本
	@Value("${database.rollback.shell}")
	public String database_rollback_shell;

	// tomcat路径
	@Value("${tomat.path}")
	public String tomat_path;
	// war部署tomcat路径,或者xt|webapps,reset|reset
	@Value("${tomcat.war.path}")
	public String tomcat_war_path;
	// tomcat缓存路径
	@Value("${tomcat.cache.path}")
	public String tomcat_cache_path;
	//#可执行程序目录
	@Value("${tomcat.bin}")
	public String tomcat_bin;
	//#日志目录
	@Value("${tomcat.logs}")
	public String tomcat_logs;
	
	//tomcat停止shell
	@Value("${tomcat.stop.shell}")
	public String tomcat_stop_shell;
	
	//tomcat启动shell
	@Value("${tomcat.start.shell}")
	public String tomcat_start_shell;

	// war 部署模式(default全部保存到tomcat.war.path)
	@Value("${tomcat.model}")
	public String tomcat_model;
	
	//执行数据库名称
	@Value("${database.name}")
	public String database_name;

	// 用户账户
	@Value("${manage.user.list}")
	private String manage_user_str;
	// 内置角色
	@Value("${manage.role.list}")
	private String manage_role_str;
	//备份脚本
	@Value("${mysql.mysqldump.cmdStr}")
	public String mysql_mysqldump_cmdStr;
	
	//恢复脚本
	@Value("${mysql.rollback.cmdStr}")
	public String mysql_rollback_cmdStr;
	
	//执行sql脚本
	@Value("${mysql.exe.cmdStr}")
	public String mysql_exe_cmdStr;
	
	//数据库操作实现类
	@Value("${mysql.impl.className}")
	public String mysql_impl_className;
	

	// 用户列表
	private List<Users> userlist;

	private List<String> rolelist;
	
	private Map<String, String> warStorageList;
	
	

	public Map<String, String> getWarStorageList() {
		if (warStorageList != null && warStorageList.size() > 0) {
			return warStorageList;
		}
		warStorageList = new HashMap<>();
		if ("default".equals(tomcat_model))
			return null;
		if ("separate".equals(tomcat_model)) {
			if (tomcat_war_path != null) {
				String[] users = tomcat_war_path.split(",");
				for (String str : users) {
					String[] temps = str.split("\\|");
					warStorageList.put(temps[0], temps[1]);
				}
			}
		}
		return warStorageList;
	}

	public List<Users> getUserlist() {
		userlist = new ArrayList<>();
		if (manage_user_str != null) {
			String[] users = manage_user_str.split(",");
			for (String str : users) {
				String [] temps=str.split("\\|");
				Users user=new Users(temps[0],temps[1],temps[2]);
				userlist.add(user);
			}
			
		}
		return userlist;
	}

	public List<String> getRolelist() {
		rolelist = new ArrayList<>();
		if (manage_role_str != null) {
			String[] roles = manage_role_str.split(",");
			for (String str : roles) {
				rolelist.add(str);
			}
		}
		return rolelist;
	}

}
